package com.leetcode;

/**
 * 二叉树的直径
 *
 * @author winson
 * @create 2022-04-15 10:24
 */
public class DiameterOfBinaryTreeSolution {

    int ans;

    public int diameterOfBinaryTree(TreeNode root) {
        ans = 1;
        dfs(root);
        return ans - 1;
    }

    public int dfs(TreeNode root) {
        if (root == null) {
            return 0;
        }
        // 左子树的深度
        int l = dfs(root.left);
        // 右子树的深度
        int r = dfs(root.right);
        // 求最大深度
        ans = Math.max(ans, l + r + 1);
        // 返回该节点的子树深度
        return Math.max(l, r) + 1;
    }
}
